package srcTest;

import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;

import junit.framework.Assert;



import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.sumset.daos.DaoRango;
import com.sumset.entidades.Puntos;
import com.sumset.entidades.Rango;
import com.sun.xml.rpc.processor.modeler.j2ee.xml.string;




/**metodo que prueba los metodos del rangoDao
 * @author leyson FCP
 *
 */
public class RangoTest {
	
	private static EJBContainer contenedor;
	/**
	 * metodo que inicaliza los atributos y crea un rango para las pruebas
	 * @throws NamingException
	 */
	@BeforeClass
	public static void testInsertar() throws NamingException {
		
		Map<String, String> properties=new HashMap<String, String>();
		properties.put(EJBContainer.APP_NAME, "taringa");
		
		contenedor=EJBContainer.createEJBContainer(properties);
		
		Rango r= new Rango();
		r.setRango("retales");
		r.setCarma(1);
		r.setPuntos(1);
		
		
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/taringa/DaoRango");
		
		dr.insert(r);
		
	}
	/**metodo que prueba el insertar de la clase rangoDao
	 * @throws Exception
	 */
	@Test
	public  void testInsert() throws NamingException {	
		Rango r= new Rango();
		r.setRango("tales");
		r.setCarma(1);
		r.setPuntos(1);
		
		
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/pratica_26/DaoRango");
		
		dr.insert(r);
		
		
		r=dr.buscar("retales");
		
		
		Assert.assertEquals("retales", r.getRango());
		
		
	}
	/**metodo que prueba el actualizar de la clase rangoDao
	 * @throws Exception
	 */
	@Test
	public void testUpdate() throws NamingException {
		
		
		Rango r=new Rango();
		r.setRango("retales");
		r.setPuntos(20);
		r.setCarma(0);
		
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/pratica_26/DaoRango");
		
		dr.update(r);
		
		r=dr.buscar("retales");
		
		Assert.assertEquals("20", r.getPuntos().toString());
		
		
	
	}
	/**metodo que prueba el eliminar de la clase rangoDao
	 * @throws Exception
	 */
	@AfterClass
	public static void testDeleteafter() throws NamingException {
		
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/pratica_26/DaoRango");
		
		Rango r=dr.buscar("retales");
		
		dr.delete(r);
		
	}
	/**metodo que prueba el buscar de la clase rangoDao
	 * @throws Exception
	 */
	@Test
	public void testBuscar() throws NamingException {
		
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/pratica_26/DaoRango");		
		
		Rango r=dr.buscar("retales");	
		
		Assert.assertEquals("retales", r.getRango());
	}
	/**metodo que prueba el listar de la clase rangoDao
	 * @throws Exception
	 */
	@Test
	public void testListar() throws NamingException {
	
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/pratica_26/DaoRango");
	
		List<Rango> rs=dr.listar();
		Rango r=dr.buscar("retales");
		Assert.assertTrue( rs.contains(r));
		
	
	}
	/**metodo que prueba el eliminar de la clase rangoDao
	 * @throws Exception
	 */
	@Test
	public  void testDelete() throws NamingException {
		
		
		DaoRango dr=(DaoRango) contenedor.getContext().lookup("java:global/pratica_26/DaoRango");
		
		Rango r=dr.buscar("tales");
		
		dr.delete(r);
		
		r=dr.buscar("tales");
		
		Assert.assertEquals(null, r);
	}

}
